leetcodeJS

Personal solution for leetcode problem using Javascript

View on GitHub

Problem

Given two binary trees, write a function to check if they are the same or not.

Two binary trees are considered the same if they are structurally identical and the nodes have the same value.

Example 1:

Input:

     1         1
    / \       / \
   2   3     2   3

    [1,2,3],   [1,2,3]

Output: true

Example 2:

Input:

       1         1
      /           \
     2             2

    [1,2],     [1,null,2]

Output: false

Example 3:

Input:

       1         1
      / \       / \
     2   1     1   2

    [1,2,1],   [1,1,2]

Output: false

Pre analysis

A simple walk should tell whether tree are same

Another solution

Transforming into array representation and comparing it

    var isSameTree = function(p, q) {
        var qArr = [];
        var pArr = [];
        toArr(q, qArr);
        toArr(p, pArr);
        console.log(qArr);
        console.log(pArr);
        if (qArr.length !== pArr.length) return false;
        for (var i = 0; i < qArr.length; i++) {
            if (qArr[i] !== pArr[i]) return false;
        }
        return true;
    };

    var toArr = function(node, acc) {
        if (!node) {
            return;
        }
        acc.push(node.val);
        acc.push(toArr(node.right, acc));
        acc.push(toArr(node.left, acc));
    }